Prior to a software application being released to users or before being made publicly available, the software application is typically tested under a variety of conditions to ensure that the application performs as expected. For example, load testing and/or code coverage analysis may be employed to test the robustness of an application. Load testing simulates various load conditions that the application may encounter during operation. For example, a web-based application may need to support tens, hundreds, thousands or more concurrent users. Load testing provides a mechanism for determining stability under varying loads, and/or identifying performance issues in the application and/or hardware and software infrastructure, prior to the application being put into production and ultimately released to end users.
A load test may exercise the code of the application as well as test desired combinations of hardware and software components in an application's infrastructure. As the load test executes, performance information is collected on the operation of the application and infrastructure. Performance information may include response time as a function of load, resource utilization, errors and/or failures, etc. For example, in the context of a corporate website being tested before the website is made accessible over the Internet, the performance information may include data such as average response time for the website's home page to load, average time to navigate through a designated portion of the website, the amount of memory being used on the web server over time, presence of one or more errors, occurrence of a failure, etc. This information may be analyzed to fix problems, improve performance or otherwise modify the application and/or infrastructure. The various tests frequently performed on applications in development often generate relatively large amounts of data that are then stored in a database to be viewed, analyzed and/or distributed.
In conventional software and/or hardware development environments, roles may be divided between a development team comprising one or more developers and a testing team (often referred to as quality assurance (QA)) comprising one or more test engineers. A test engineer may be responsible for running various tests (e.g., load tests) on the application, generating test results, identifying issues and/or bugs in the application and distributing the test results and/or bug reports to the developer. While a developer may conduct various unit tests on code that he or she has written, in general, the bulk of the testing (particularly on software release candidates) may be handled by test engineers who are not themselves developing code, implementing bug fixes, etc. As a result, a test engineer must convey to the developer(s) the information obtained during testing of the application so that the appropriate fixes and/or improvements to the code may be implemented. That is, some form of information sharing between QA and development is typically conducted.
The sharing and distribution of such information is often performed, at least in part, using a bug tracking system. A test engineer may identify a bug during testing of the application and generate a work item or bug report that provides information to facilitate the developer in providing a bug fix. The term “bug” refers herein to any perceived issue with an application or infrastructure identified during testing of the application. For example, a bug may be any failure, fault or error encountered during operation of the application. In addition, a bug may include operation of the application that deviates from the design specification and/or that fails to function as expected or perform as intended.
A work item generated by a test engineer may be distributed to an appropriate developer to notify the developer of the existence of the bug. The term “work item” refers generally to any notification to a developer that there is an outstanding issue with an application that should be addressed. A work item may be an e-mail sent to a developer or may be an entry or record stored in a repository that can be viewed and accessed by the developers working on the application. Test results obtained by a test engineer may be important for a developer to gain an understanding of the problem so that a proper fix can be implemented. To facilitate the developer, the test engineer may manually provide a network path that locates the test results in the repository or database in which the results are stored, so that the developer may access the appropriate test results associated with the work item. In addition, to communicate any other information that the test engineer perceives as relevant to the bug, the test engineer manually inputs the information into the work item to convey it to the developer(s).